package com.spoto.oa.service;

import java.sql.SQLException;
import java.util.List;

import com.spoto.oa.model.Notice;
import com.spoto.oa.model.NoticeType;

/**
 * 
 * @Project: OA
 * @Description:公告模块的功能服务
 * @Author: LinYiSong
 * @Vesion: 
 * @Date: 2010-10-16~2010-10-16
 */
public interface NoticeServ {

	/**
	 * 取得公告类型
	 * @return
	 */
	public List<NoticeType> getAllNoticeTypes();
	/**
	 * 保存公告
	 * @param notice
	 * @throws SQLException 
	 */
	public void saveNotice(Notice notice) throws SQLException;
	/**
	 * 取得所有公告
	 * @return
	 */
	public List<Notice> getAllNotices();
	/**
	 * 根据id删除公告
	 * @param id
	 *  
	 */
	public void deleteById(int id);
	/**
	 * 根据id取得对应的公告
	 */
	public Notice getById(int id);
	/**
	 * 更新
	 * @param notice
	 */
	public void updateNotice(Notice notice);
	
	/**
	 * 搜索信息如果为空,相当于搜索该类型的所有公告
	 * @param searchType
	 * @return
	 */
	public List<Notice> searchAllByType(String searchType);
	/**
	 * 根据公告类型和标题,得到所有的公告信息
	 * @param searchType
	 * @param infor
	 * @return
	 */
	public List<Notice> searchAllByTypeAndTitle(String type, String title);
	/**
	 * 根据id删除公告类型
	 * @param id
	 */
	public void deleteTypeById(int id);
	
	/**
	 * 根据id取得对应的公告类型
	 * @param id
	 * @return
	 */
	public NoticeType getNoticeTypeById(int id);
	/**
	 * 修改公告类型
	 * @param noticeType
	 */
	public void updateNoticeType(NoticeType noticeType);
	/**
	 * 添加公告类型
	 * @param noticeType
	 */
	public void addNoticeType(NoticeType noticeType);
	/**
	 * 根据公告名取得公告类型
	 * @param name 
	 * @return
	 */
	public NoticeType getNoticeTypeByName(String name);
	/**
	 * 根据公告类型编号取得公告类型
	 * @param no
	 * @return
	 */
	public NoticeType getNoticeTypeByNo(int no);

	
}
